package com.d3works.apps.account.service.invoice;

import com.d3works.apps.account.db.AnalyticMoveLine;
import com.d3works.apps.account.db.Invoice;
import com.d3works.apps.account.db.InvoiceLine;
import com.d3works.exception.D3worksException;
import java.util.List;

public interface InvoiceLineAnalyticService {

  public InvoiceLine selectDefaultDistributionTemplate(InvoiceLine invoiceLine)
      throws D3worksException;

  InvoiceLine clearAnalyticAccounting(InvoiceLine invoiceLine);

  InvoiceLine analyzeInvoiceLine(InvoiceLine invoiceLine, Invoice invoice) throws D3worksException;

  List<AnalyticMoveLine> getAndComputeAnalyticDistribution(InvoiceLine invoiceLine, Invoice invoice)
      throws D3worksException;

  List<AnalyticMoveLine> computeAnalyticDistribution(InvoiceLine invoiceLine);

  List<AnalyticMoveLine> createAnalyticDistributionWithTemplate(InvoiceLine invoiceLine);
}
